Allocation of Resources Between Web Services in a Composite Service

ABSTRACT

Technologies are described herein for allocating resources of a publisher web service to a subscriber web service according to the subscriber web service&#39;s SLA type. A request for information is received from a subscriber web service. The request for information may include a SLA type between a publisher web service and the subscriber web service and an identifier of the subscriber web service. The composite service may include the publisher web service and the subscriber web service. A resource allocation associated with the SLA type is retrieved. A set of resources are allocated multiple resources of the publisher web service to the subscriber web service according to the resource allocation and the identifier. The set of resources may be configured to satisfy the request for information

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 12/901,591, filed on Oct. 11, 2010, and titled “Allocation ofResources Between Web Services in a Composite Service,” the entirecontents of which are hereby incorporated by reference herein.

BACKGROUND

Conventional software applications have generally been installed andexecuted in a localized computing environment, such as a desktop orenterprise environment. The advancement of increasingly powerfulcomputing devices and expanding data storage capacity in large scalenetworked data centers has moved consumer and business-orientedapplications away from local computing environments to computingenvironments provided over the Internet or other types of networks,commonly referred to as “cloud-based” computing environments. Theseapplications may be offered as hosted services in the cloud-basedcomputing environment.

As the Internet continues to grow, service providers may continue tooffer more diverse hosted services. These hosted services may be offeredat various levels, including end user services and various backendservices. For example, a hosted service may offer one level of serviceto one hosted service and offer another level of service to anotherhosted service. The various levels of service may refer to differentallocations of resources, such as processing resources, memoryresources, networking resources, and/or the like. Combining these hostedservices can yield a composite service. It is difficult, however, tointegrate multiple levels of hosted services, especially when thesehosted services are offered by different service providers.

It is with respect to these considerations and others that thedisclosure made herein is presented.

SUMMARY

Technologies are described herein for allocating resources of apublisher web service to a subscriber web service according to thesubscriber web service's service level agreement (SLA) type. A compositeservice may include multiple web services, such as a first web serviceand a second web service. The second web service may utilize resourcesprovided by the first web service. In order to utilize resourcesprovided from the first web service, the second web service maysubscribe to a level of service (e.g., the SLA type) from the first webservice. In this case, the first web service may be referred to as thepublisher web service, and the second web service may be referred to asthe subscriber web service.

Through the utilization of the technologies and concepts presentedherein, the subscriber web service can send a request for information tothe publisher web service. The request for information may include anidentifier of the subscriber web service. The publisher web service mayretrieve the SLA type associated with the identifier of the subscriberweb service. The publisher web service may then allocate resources forsatisfying the request for information based on the SLA type. In oneexample, the publisher web service may route the request for informationto a server adapted to provide the information. The server can thenprovide the information directly to the subscriber web service inresponse to the request for information. In another example, thepublisher web service may retrieve a uniform resource locator (URL)based on the SLA type. The URL may correspond to a server configured toprovide the information. The subscriber web service can then access theURL in order to retrieve the information.

Example technologies may provide for allocating resources between webservices in a composite service. The technologies receive a request forinformation from a subscriber web service. The request for informationmay include a SLA type between a publisher web service and thesubscriber web service and an identifier of the subscriber web service.The composite service may include the publisher web service and thesubscriber web service. The technologies retrieve a resource allocationassociated with the SLA type. The technologies allocate a set ofresources from multiple resources of the publisher web service to thesubscriber web service according to the resource allocation and theidentifier. The set of resources may be configured to satisfy therequest for information.

It should be appreciated that the above-described subject matter mayalso be implemented as a computer-controlled apparatus, a computerprocess, a computing system, or as an article of manufacture such as acomputer-readable storage medium. These and various other features willbe apparent from a reading of the following Detailed Description and areview of the associated drawings.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intendedthat this Summary be used to limit the scope of the claimed subjectmatter. Furthermore, the claimed subject matter is not limited toimplementations that solve any or all disadvantages noted in any part ofthis disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a composite service adapted toallocate resources of a publisher web service to a subscriber webservice according to the subscriber web service's SLA type, inaccordance with some embodiment;

FIG. 2 is a flow diagram illustrating a method for allocating resourcesof a publisher web service to a subscriber web service according to thesubscriber web service's SLA type, in accordance with some embodiments;and

FIG. 3 is a computer architecture diagram showing an illustrativecomputer hardware architecture for a computing system capable ofimplementing the embodiments presented herein.

DETAILED DESCRIPTION

The following detailed description is directed to technologies forallocating resources of a publisher web service to a subscriber webservice according to the subscriber web service's SLA type. Inaccordance with some embodiments described herein, a composite servicemay include multiple web services. Each of these web services may be apublisher web service and/or a subscriber web service. A subscriber webservice may refer to a web service that utilizes resources provided by apublisher web service. A subscriber web service may be associated with aSLA type corresponding to a particular publisher web service. Apublisher web service may allocate resources for each correspondingsubscriber web service depending on the subscriber web service's SLAtype.

While the subject matter described herein is presented in the generalcontext of program modules that execute in conjunction with theexecution of an operating system and application programs on a computersystem, those skilled in the art will recognize that otherimplementations may be performed in combination with other types ofprogram modules. Generally, program modules include routines, programs,components, data structures, and other types of structures that performparticular tasks or implement particular abstract data types. Moreover,those skilled in the art will appreciate that the subject matterdescribed herein may be practiced with other computer systemconfigurations, including hand-held devices, multiprocessor systems,microprocessor-based or programmable consumer electronics,minicomputers, mainframe computers, and the like.

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and which are shown byway of illustration, specific embodiments, or examples. Referring now tothe drawings, in which like numerals represent like elements through theseveral figures, a computing system and methodology for allocatingresources of a publisher web service to a subscriber web serviceaccording to the subscriber web service's SLA type will be described.

FIG. 1 illustrates a composite service 100 adapted to allocate resourcesof a publisher web service to a subscriber web service according to thesubscriber web service's SLA type, in accordance with some embodiments.The composite service 100 may include a first web service 102, a secondweb service 104, and a third web service 106. The web services 102-106may be coupled via a communications network 108. An example of thecomposite service 100 is the monitoring service described in U.S. patentapplication Ser. No. 12/900,481, filed Oct. 8, 2010, entitled “Providinga Monitoring Service in a Cloud-Based Computing Environment,” AttorneyDocket No. 330467.01, which is hereby incorporated by reference in itsentirety. Some examples of the web services 102-106 include the variousweb services (e.g., controller application, monitor application, finderapplication, analyzer application, notifier application, etc.) alsodescribed in the above referenced and incorporated patent applicationentitled “Providing a Monitoring Service in a Cloud-Based Environment.”

The first web service 102 may include a SLA module 109 and resourceallocation table 110. The resource allocation table 110 may include afirst resource allocation 111A and a second resource allocation 111B.The second web service 104 may include a request module 112A and a SLAtype 114A. The third web service 106 may include a request module 112Band a SLA type 114B. In the example illustrated in FIG. 1, the first webservice 102 may be referred to as a publisher web service, and thesecond web service 104 and the third web service 106 may be referred toa subscriber web services. That is, the second web service 104 and thethird web service 106 may be configured to utilize resources provided bythe first web service 102. The web services 102-106 may each be apublisher web service and/or a subscriber web service, according tovarious embodiments.

The second web service 104 and the third web service 106 may beassociated with different SLA types 114A, 114B and unique identifiers116A, 116B. The SLA types 114A, 114B may be associated with one or morepublisher web services, including the first web service 102. The SLAtypes 114A, 114B may also be associated with different fees paid by anoperator of the second web service 104 and an operator of the third webservice 106 to an operator of the first web service 102. In someexamples, the SLA types 114A, 114B may be shared with multiple publisherservices. In other examples, the SLA types 114A, 114B may be associatedwith only the first web service 102, while other SLA types may beassociated with other publisher web services. In the example illustratedin FIG. 1, the SLA type 114A may correspond to a “platinum” level SLAtype, and the SLA type 114B may correspond to a “silver” level SLA type.The platinum level may be associated with a higher allocation ofresources than the silver level. It should be appreciated that theplatinum level and silver level SLA types are merely illustrative, andother SLA types may be similarly utilized.

In an illustrative example, the first web service 102 may be a searchservice. In this example, the request modules 112A, 112B may beconfigured to send a request for information to the SLA module 109. Therequest for information may include queries, the corresponding SLA types114A, 114B, and the identifiers 116A, 116B of the second web service 104and the third web service 106. Upon receiving the request forinformation, the SLA module 109 may retrieve resource allocations 111A,111B corresponding to the SLA types 114A, 114B from the resourceallocation table 110. For example, the SLA type 114A may correspond tothe resource allocation 111A, and the SLA type 114B may correspond tothe resource allocation 111B.

The SLA module 109 may then allocate resources for performing the searchservice to the second web service 104 and the third web service 106according to the retrieved resource allocations 111A, 111B and theidentifiers 116A, 116B. For example, the SLA module 109 may allocate afirst set of resources from multiple resources in the first web service102 to the second web service 104. The SLA module 109 may also allocatea second set of resources from the multiple resources in the first webservice 102 to the third web service 106. In some embodiments, theresource allocation table 110 may be stored in the memory of a computeroperating the first web service 102. In other embodiments, the resourceallocation table 110 may be stored in an external database accessible bya computer operating the first web service 102.

The resources may refer to one or more entities that a publisher webservice is capable of allocating to multiple subscriber web services.Such resources may be allocated according to suitable business rulesassociated with the various SLA types 114A, 114B. In a first embodiment,the resources may refer to servers adapted to retrieve search resultscorresponding to a query. For example, when the request module 112Asends a query to the SLA module 109, the SLA module 109 may allocate adedicated server to the second web service 104 according to the platinumlevel. When the request module 112B sends a query to the SLA module 109,the SLA module 109 may allocate a shared server to the third web service106 according to the silver level. The shared server may be shared bymultiple web services.

The SLA module 109 may allocate the dedicated server and the sharedserver by sending URLs corresponding to the dedicated server and theshared server to the request modules 112A, 112B. The second web service104 and the third web service 106 can then utilize the URLs in order toretrieve the search results. Alternatively, the SLA module 109 may routethe query directly to the dedicated server and the shared server. Thededicated server and the shared server can then retrieve and provide thesearch results to the second web service 104 and the third web service106 without further action from the second web service 104 and the thirdweb service 106.

In a second embodiment, the resources may refer to a level of access.For example, when the request module 112A sends a query to the SLAmodule 109, the SLA module 109 may assign access to a greater number ofsearch providers to the second web service 104 according to the platinumlevel. When the request module 112B sends a query to the SLA module 109,the SLA module 109 may assign a lesser number of search providers to thethird web service 106 according to the silver level.

In a third embodiment, the resources may refer to bandwidth or othersuitable computer resources. For example, when the request module 112Asends a query to the SLA module 109, the SLA module 109 may allocateadditional computer resources to the second web service 104 according tothe platinum level SLA. When the request module 112B sends a query tothe SLA module 109, the SLA module 109 may decrease available computerresources available to the third web service 106 according to the silverlevel.

In a fourth embodiment, the resources may refer to service availabilityor uptime. For example, when the request module 112A sends a query tothe SLA module 109, the SLA module 109 may allocate a greater time ofavailability or uptime to the second web service 104 according to theplatinum level. When the request module 112B sends a query to the SLAmodule 109, the SLA module 109 may allocate a lesser time ofavailability or uptime to the third web service 106 according to thesilver level.

In a fifth embodiment, the resources may refer to a response time. Forexample, when the request module 112A sends a query to the SLA module109, the SLA module 109 may assign real-time or near real-time access ofsearch results to the second web service 104 according to the platinumlevel. When the request module 112B sends a query to the SLA module 109,the SLA module 109 may assign delayed access to the third web service106 according to the silver level.

As previously described, the SLA module 109 may allocate resourcesaccording to suitable business rules associated with the various SLAtypes 114A, 114B. These business rules may account for factorsassociated with the resources. In one example, where the SLA module 109routes a query to a particular shared server, the SLA module 109 mayaccount for current server load. In this example, the SLA module 109 mayroute the query to a shared server having the lowest current load. Inanother example, where the SLA module 109 routes a query to a particularserver, the SLA module 109 may account for current server availability.In this example, the SLA module 109 may route the query to a serverhaving current availability to respond to the query. In yet anotherexample, where the SLA module 109 routes a query to a particular server,the SLA module 109 may account for political requirements. In thisexample, the SLA module 109 may route the query to a server in Chinawhere business rules dictate that Chinese political requirements be met.

Referring now to FIG. 2, additional details regarding the operations ofthe request modules 112A, 112B and the SLA module 109 will be provided.In particular, FIG. 2 is a flow diagram illustrating a method forallocating resources of a publisher web service to a subscriber webservice according to the subscriber web service's SLA type, inaccordance with some embodiments. It should be appreciated that thelogical operations described herein are implemented (1) as a sequence ofcomputer implemented acts or program modules running on a computingsystem and/or (2) as interconnected machine logic circuits or circuitmodules within the computing system. The implementation is a matter ofchoice dependent on the performance and other requirements of thecomputing system. Accordingly, the logical operations described hereinare referred to variously as states operations, structural devices,acts, or modules. These operations, structural devices, acts, andmodules may be implemented in software, in firmware, in special purposedigital logic, and any combination thereof. It should be appreciatedthat more or fewer operations may be performed than shown in the figuresand described herein. These operations may also be performed in adifferent order than those described herein.

In FIG. 2 a routine 200 begins at operation 202, where the SLA module109 receives a request for information from a subscriber web service,such as the second web service 104. That is, the request module 112A maysend the request for information to the SLA module 109. The request forinformation may include the SLA type 114A and the identifier 116A. TheSLA type 114A may specify a level of service agreed between the secondweb service 104 and the first web service 102. For example, a higher feepaid by an operator of the second web service 104 to an operator of thefirst web service 102 may correspond to a higher level of service, whilea lower fee paid by an operator of the second web service 104 to anoperator of the first web service 102 may correspond to a lower level ofservice. The identifier 116A may identify and/or specify a location ofthe second web service 104. When the SLA module 109 receives the requestfor information from the second web service 104, the routine 200 mayproceed to operation 204.

At operation 204, the SLA module 109 may retrieve a resource allocationassociated with the SLA type 114A. In some embodiments, the SLA module109 may retrieve the resource allocation 111A corresponding to the SLAtype 114A from the resource allocation table 110. The resourceallocation table 110 may include multiple SLA types, each of whichcorresponds to a particular resource allocation. That is, different SLAtypes may correspond to different resource allocations. When the SLAmodule 109 retrieves the resource allocation associated with the SLAtype 114A, the routine 200 may proceed to operation 206.

At operation 206, the SLA module 109 allocates a set of resources of thefirst web service 102 to the second web service 104 according to theretrieved resource allocation 111A and the identifier 116A. The firstweb service 102 may include multiple resources. At least a portion ofthese resources may form the set of resources allocated to the first webservice 102. The SLA module 109 may determine the set of resources basedon the retrieved resource allocation 111A. The SLA module 109 may thenallocate the set of resources to the second web service 104 asidentified by the identifier 116A. When the SLA module 109 allocates theset of resources of the first web service 102 to the second web service104 according to the retrieved resource allocation 111A and theidentifier 116A, the routine 200 may repeat (e.g., periodically,continuously, or on demand as needed) or terminate.

Turning now to FIG. 3, an example computer architecture diagram showinga computer 300 is illustrated. The computer 300 may include a centralprocessing unit 302, a system memory 304, and a system bus 306 thatcouples the memory 304 to the 302. The computer 300 may further includea mass storage device 312 for storing one or more program modules 314and the database 316. Examples of the program modules 314 may includethe SLA module 109 and the request module 112A. The database 316 maystore the resource allocation table 110. The mass storage device 312 maybe connected to the processing unit 302 through a mass storagecontroller (not shown) connected to the bus 306. The mass storage device312 and its associated computer-storage media may provide non-volatilestorage for the computer 300. Although the description ofcomputer-storage media contained herein refers to a mass storage device,such as a hard disk or CD-ROM drive, it should be appreciated by thoseskilled in the art that computer-storage media can be any availablecomputer storage media that can be accessed by the computer 300.

By way of example, and not limitation, computer-storage media mayinclude volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for the non-transitory storageof information such as computer-storage instructions, data structures,program modules, or other data. For example, computer-storage mediaincludes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memoryor other solid state memory technology, CD-ROM, digital versatile disks(“DVD”), HD-DVD, BLU-RAY, or other optical storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can be accessed by the computer 300.

According to various embodiments, the computer 300 may operate in anetworked environment using logical connections to remote computersthrough a network such as the network 108. The computer 300 may connectto the network 108 through a network interface unit 310 connected to thebus 306. It should be appreciated that the network interface unit 310may also be utilized to connect to other types of networks and remotecomputer systems. The computer 300 may also include an input/outputcontroller 308 for receiving and processing input from a number of inputdevices (not shown), including a keyboard, a mouse, a microphone, and agame controller. Similarly, the input/output controller 308 may provideoutput to a display or other type of output device (not shown).

The bus 306 may enable the processing unit 302 to read code and/or datato/from the mass storage device 312 or other computer-storage media. Thecomputer-storage media may represent apparatus in the form of storageelements that are implemented using any suitable technology, includingbut not limited to semiconductors, magnetic materials, optics, or thelike. The computer-storage media may represent memory components,whether characterized as RAM, ROM, flash, or other types of technology.The computer-storage media may also represent secondary storage, whetherimplemented as hard drives or otherwise. Hard drive implementations maybe characterized as solid state, or may include rotating media storingmagnetically-encoded information.

The program modules 314 may include software instructions that, whenloaded into the processing unit 302 and executed, cause the computer 300to allocate resources of a publisher web service to a subscriber webservice according to the subscriber web service's SLA type. The programmodules 314 may also provide various tools or techniques by which thecomputer 300 may participate within the overall systems or operatingenvironments using the components, flows, and data structures discussedthroughout this description. For example, the program modules 314 mayimplement interfaces for allocating resources of a publisher web serviceto a subscriber web service according to the subscriber web service'sSLA type.

In general, the program modules 314 may, when loaded into the processingunit 302 and executed, transform the processing unit 302 and the overallcomputer 300 from a general-purpose computing system into aspecial-purpose computing system customized to allocate resources of apublisher web service to a subscriber web service according to thesubscriber web service's SLA type. The processing unit 302 may beconstructed from any number of transistors or other discrete circuitelements, which may individually or collectively assume any number ofstates. More specifically, the processing unit 302 may operate as afinite-state machine, in response to executable instructions containedwithin the program modules 314. These computer-executable instructionsmay transform the processing unit 302 by specifying how the processingunit 302 transitions between states, thereby transforming thetransistors or other discrete hardware elements constituting theprocessing unit 302.

Encoding the program modules 314 may also transform the physicalstructure of the computer-storage media. The specific transformation ofphysical structure may depend on various factors, in differentimplementations of this description. Examples of such factors mayinclude, but are not limited to: the technology used to implement thecomputer-storage media, whether the computer-storage media arecharacterized as primary or secondary storage, and the like. Forexample, if the computer-storage media are implemented assemiconductor-based memory, the program modules 314 may transform thephysical state of the semiconductor memory, when the software is encodedtherein. For example, the program modules 314 may transform the state oftransistors, capacitors, or other discrete circuit elements constitutingthe semiconductor memory.

As another example, the computer-storage media may be implemented usingmagnetic or optical technology. In such implementations, the programmodules 314 may transform the physical state of magnetic or opticalmedia, when the software is encoded therein. These transformations mayinclude altering the magnetic characteristics of particular locationswithin given magnetic media. These transformations may also includealtering the physical features or characteristics of particularlocations within given optical media, to change the opticalcharacteristics of those locations. Other transformations of physicalmedia are possible without departing from the scope of the presentdescription, with the foregoing examples provided only to facilitatethis discussion.

Based on the foregoing, it should be appreciated that technologies forallocating resources of a publisher web service to a subscriber webservice according to the subscriber web service's SLA type are presentedherein. Although the subject matter presented herein has been describedin language specific to computer structural features, methodologicalacts, and computer readable media, it is to be understood that theinvention defined in the appended claims is not necessarily limited tothe specific features, acts, or media described herein. Rather, thespecific features, acts and mediums are disclosed as example forms ofimplementing the claims.

The subject matter described above is provided by way of illustrationonly and should not be construed as limiting. Various modifications andchanges may be made to the subject matter described herein withoutfollowing the example embodiments and applications illustrated anddescribed, and without departing from the true spirit and scope of thepresent invention, which is set forth in the following claims.

What is claimed is:
 1. A computer-implemented method for allocatingresources between web services in a composite service, the methodcomprising computer-implemented operations for: receiving a request forinformation from a subscriber web service, the request for informationcomprising a service level agreement (SLA) type between a publisher webservice and the subscriber web service and an identifier of thesubscriber web service, the composite service comprising the publisherweb service and the subscriber web service; retrieving a resourceallocation associated with the SLA type; and allocating a set ofresources from multiple resources of the publisher web service to thesubscriber web service according to the resource allocation and theidentifier, the set of resources configured to satisfy the request forinformation.